package com.niuwa.p2p.dao.message;

import java.util.List;
import java.util.Map;

import com.niuwa.p2p.dao.MyBatisDao;
import com.niuwa.p2p.entity.message.Message;
import com.niuwa.p2p.vo.front.account.MsgVo;

@MyBatisDao
public interface MessageDao {
    int deleteByPrimaryKey(Long id);

    int insert(Message record);

    int insertSelective(Message record);

    Message selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(Message record);

    int updateByPrimaryKey(Message record);
    
    List<Message> getMessageList(Map<String, Object> paramMap);
	int getMessageListCount(Map<String, Object> paramMap);
	
	 
    /**
     * 消息管理列表[web]
     * @param paramMap
     * @return
     */
    List<MsgVo> selectMsgBySelectiveListPage(Map<String,Object> paramMap);
    
    /**
     * 查询未读消息数[web]
     * @param paramMap
     * @return
     */
    long selectUnreadMsgCount(Map<String,Object> paramMap);
    
    /**
     * 批量修改已读状态
     * @param paramMap
     * @return
     */
    int updateMsgReadStatus(Map<String,Object> paramMap);
    
    /**
     * 查询最近有效message
     * @param paramMap
     * @return
     */
    Message selectByParam(Map<String,Object> paramMap);
    
    
   	/**
   	 * 查询当天某一个类型发送成功次数、限制发送【手机短信验证码】
   	 * 
   	 * @param hashMap
   	 * @return
   	 */
   	int findCountByType(Map<String, String> paraMap);
   	
   	/**
   	 * 根据类型获取有效的手机验证码
   	 * 
   	 * @param map
   	 * @return
   	 */
   	Message findVerityCodeByType(Map<String, Object> map);
   	
   	/**
   	 * 手机端查询消息列表
   	 * 
   	 * @param map
   	 * @return
   	 */
   	List<Map<String, Object>> appFindAllMap(Map<String, Object> map);
   	
   	/**
   	 * 手机端批量更新消息已读、失效状态
   	 * 
   	 * @param map
   	 * @return
   	 */
   	int appUpdateBatchToRead(Map<String, Object> map);
   	
   	/**
   	 * 根据接收方Id、发送方式、模板编号获取最新发送消息内容【邮件认证时用到该方法】
   	 * @param map
   	 * @return
   	 */
   	Message selectMessageBySelective(Map<String, Object> map);
   	
   	/**
   	 * 根据接收方Id、发送方式、模板编号标记信息未无效【邮件认证时用到该方法】
   	 * @param map
   	 * @return
   	 */
   	int updateMsgValid(Map<String, Object> map) throws Exception;
}